home *** CD-ROM | disk | FTP | other *** search
- /**
- * Name: vrml
- * Description: Virtual Reality Modeling Language (VRML97)
- *
- * Typesets UTF-8 encoded VRML files including inline scripts
- * (JavaScript or VrmlScript) using Encript's JavaScript mode.
- *
- * Note: Some VRML browsers allow use of double quotes in
- * defining string literals inside inlined scripts. Doing so
- * breaks the logic programmed here. Using single quotes
- * (i.e. ECMAScript spec-compliant string literals) works fine.
- *
- * Author: James S°rlie <sorliej@imm.dtu.dk>
- */
-
- state vrml extends HighlightEntry
- {
- BEGIN {
- require_state (javascript);
- }
-
- /* Comments. */
- /#/ {
- comment_face (true);
- language_print ($0);
- call (eat_one_line);
- comment_face (false);
- }
-
- /* Inline Script Protocols. */
- /\"javascript:|\"vrmlscript:/ {
- reference_face (true);
- language_print ($0);
- reference_face (false);
- from_vrml = 1;
- call (javascript_internal);
- }
-
- /* String constants. */
- /\"/ {
- string_face (true);
- language_print ($0);
- call (c_string);
- string_face (false);
- }
-
- /* UTF-8 header text. */
- /^#VRML V2.0/ {
- reference_face (true);
- language_print ($0);
- call (eat_one_line);
- reference_face (false);
- }
-
- /* Built-ins nodes:
- http://www.vrml.org/Specifications/VRML97/part1/nodesRef.html
-
- (build-re '(Introduction Anchor Appearance AudioClip Background
- Billboard Box Collision Color ColorInterpolator Cone Coordinate
- CoordinateInterpolator Cylinder CylinderSensor DirectionalLight
- ElevationGrid Extrusion Fog FontStyle Group ImageTexture
- IndexedFaceSet IndexedLineSet Inline LOD Material MovieTexture
- NavigationInfo Normal NormalInterpolator OrientationInterpolator
- PixelTexture PlaneSensor PointLight PointSet PositionInterpolator
- ProximitySensor ScalarInterpolator Script Shape Sound Sphere
- SphereSensor SpotLight Switch Text TextureCoordinate TextureTransform
- TimeSensor TouchSensor Transform Viewpoint VisibilitySensor
- WorldInfo))
- */
- /\b(A(nchor|ppearance|udioClip)|B(ackground|illboard|ox)\
- |C(o(l(lision|or(|Interpolator))|ne|ordinate(|Interpolator))\
- |ylinder(|Sensor))\
- |DirectionalLight|E(levationGrid|xtrusion)|Fo(g|ntStyle)|Group\
- |I(mageTexture|n(dexed(FaceSet|LineSet)|line|troduction))|LOD\
- |M(aterial|ovieTexture)|N(avigationInfo|ormal(|Interpolator))\
- |OrientationInterpolator\
- |P(ixelTexture|laneSensor|o(int(Light|Set)|sitionInterpolator)\
- |roximitySensor)\
- |S(c(alarInterpolator|ript)|hape|ound|p(here(|Sensor)|otLight)|witch)\
- |T(ext(|ure(Coordinate|Transform))|imeSensor|ouchSensor|ransform)\
- |Vi(ewpoint|sibilitySensor)|WorldInfo)\b/ {
- builtin_face (true);
- language_print ($0);
- builtin_face (false);
- }
-
- /* Keywords.
- http://www.vrml.org/Specifications/VRML97/part1/grammar.html#TableA.1 */
- /\b(DEF|EXTERNPROTO|FALSE|IS|NULL|PROTO|ROUTE|T(O|RUE)|USE|\
- e(vent(In|Out)|xposedField)|field)\b/ {
- keyword_face (true);
- language_print ($0);
- keyword_face (false);
- }
-
- /* Types.
- http://www.vrml.org/Specifications/VRML97/part1/grammar.html#Fields */
- /\b(MF(Color|Float|Int32|Node|Rotation|String|Time|Vec(2f|3f))|\
- SF(Bool|Color|Float|Image|Int32|Node|Rotation|String|Time|Vec(2f|3f)))\b/ {
- type_face (true);
- language_print ($0);
- type_face (false);
- }
- }
-
-
- /*
- Local variables:
- mode: c
- End:
- */
-